package leetcode.ArrayAndString;


public class PivotIndex {

    /**
     * 寻找数组的中心索引
     * 整数类型的数组 nums
     * 数组中心索引：数组中心索引的左侧所有元素相加的和等于右侧所有元素相加的和。
     * 如果数组不存在中心索引，那么我们应该返回 -1。
     * 如果数组有多个中心索引，那么我们应该返回最靠近左边的那一个。
     */

    public static int pivotIndex(int[] nums) {
        if (nums.length <= 2 || nums == null) {
            return -1;
        }
        int sum = 0;
        for (int num : nums) {
            sum += num;
        }
        int left = 0;
        int right = 0;
        for (int z = 0; z < nums.length; z++) {

            right = sum - nums[z] - left;
            if (left == right) {
                return z;
            }
            left += nums[z];

        }
        return -1;
    }

    public static void main(String args[]) {
        int[] nums = addList();
        long start = System.currentTimeMillis();
        System.out.println("中心索引为：" + pivotIndex(nums));
        long end = System.currentTimeMillis();

        System.out.println("time = " + (end - start));

    }

    private static int[] addList() {
        int[] bb = {1, 2, 3, 4, 5, 4, 3, 2, 1, 2, 3, 4, 5, 4, 3, 2, 1, 2, 3, 4, 5, 4, 3, 2, 1, 2, 3, 4, 5, 4, 3, 2, 1, 2, 3, 4, 5, 4, 3, 2, 1, 2, 3, 4, 5, 4, 3, 2, 1, 2, 3, 4, 5, 4, 3, 2, 1, 2, 3, 4, 5, 4, 3, 2, 1, 2, 3, 4, 5, 4, 3, 2, 1, 2, 3, 4, 5, 4, 3, 2, 1, 2, 3, 4, 5, 4, 3, 2, 1, 2, 3, 4, 5, 4, 3, 2, 1, 2, 3, 4, 5, 4, 3, 2, 1, 2, 3, 4, 5, 4, 3, 2, 1};
        return bb;
    }
}
